데이터베이스 주요용어

스키마(Scheme) 구조

스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한다. 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나뉜다.

[Three Level Database Architecture]

외부 스키마(External Schemea) = 서브 스키마 = 사용자 뷰(View)

  • 사용자 입장에서 필요로 하는 데이터베이스의 논리적인 구조를 정의한다.
  • 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마라고도 한다.
  • 하나의 데이터베이스 시스템에는 여러 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 사용자가 공용할 수 있다.

개념 스키마(Conceptual Schema) = 전체적인 뷰(View)

  • 데이터베이스의 전체적인 논리적 구조로서, 단순히 스키마라고 하면 개념 스키마를 의미한다.
  • 모든 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
  • 엔터티 간의 관계와 제약조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.

    논리적 독립성

    • 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
    • 외부의 변경에도 개념 스키마는 변하지 않는다.

내부 스키마(Internal Schema)

  • 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다.
  • 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고 실제 저장 방법을 기술한다.

    물리적 독립성

    • 내부 스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않도록 지원한다.
    • 물리적 구조 영향 없이 개념 구조를 변경할 수 있고, 개념 구조 영향 없이 물리적인 구조를 변경할 수 있다.


키(Key)의 개념 및 종류

키는 데이터베이스에서 조건에 만족하는 튜플(레코드)을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성이다.

기본키(Primary Key)

  • 테이블 레코드의 식별자로 이용하기에 가장 적합하다고 정의된 후보키이다.
  • 테이블에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.
  • e.g. <학생> 테이블: {주민등록번호}, {학번}

외래키(Foreign Key)

  • 한 테이블의 속성 중 다른 테이블의 레코드를 식별할 수 있는 키이다.
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다.
  • e.g. <수강> 테이블의 {학번}에는 <학생> 테이블의 {학번}에 없는 값은 입력 불가

슈퍼키(Super Key)

  • 레코드를 유일하게 식별할 수 있는 속성들의 집합, 한 테이블은 여러 슈퍼키를 가질 수 있다.
  • 테이블을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다.
  • e.g. <학생> 테이블: {주민등록번호}, {학번}, {학번, 이름}, {주민등록번호, 이름} 등

후보키(Candidate Key)

  • 슈퍼키에서 레코드를 유일하게 식별하는데 있어 필요없는 속성을 제거한 슈퍼키의 부분집합이다.
  • e.g. <학생> 테이블: {주민등록번호}, {학번}

대체키(Alternate Key)

  • 후보키 중 기본키로 선정되지 않은 키이다.
  • e.g. <학생> 테이블: {학번}이 기본키로 정의되면 {주민등록번호}는 대체키가 된다.


데이터 무결성(Integrity)

데이터 무결성은 데이터의 정확성, 일관성을 유지하고 보증하는 것을 말한다. 데이터의 무결성을 유지하는 것은 데이터베이스 관리시스템(DBMS)의 중요한 기능이다.

개체 무결성(Entity Integrity)

  • 모든 테이블이 기본키로 선택된 속성을 가져야 한다.
  • 테이블에서 기본키를 구성하는 속성은 NULL 값이나 중복값을 가질 수 없다.

참조 무결성(Referential Integrity)

  • 외래키 값은 NULL이거나 참조 테이블의 기본키 값과 동일해야 한다.
  • 테이블은 참조할 수 없는 외래키 값을 가질 수 없다.

도메인 무결성(Domain Integrity)

  • 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다. (테이블 속성의 무결성 보장)
  • 속성의 타입, NULL 허용여부 등에 대한 사항을 정의하고, 데이터가 올바르게 입력되었는지 확인한다.


시스템 카탈로그

데이터베이스에 포함되는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지관리하는 시스템 테이블이다. DDL의 결과로 구성되는 테이블, 뷰, 인덱스, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 제공한다.

시스템 카탈로그의 특징

  • 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL을 이용하여 내용 검색을 할 수 있다.
  • INSERT, DELETE, UPDATE 문으로 갱신할 수 없으며, DBMS가 스스로 생성하고 유지한다.
  • 사용자가 SQL문을 실행시켜 테이블, 뷰, 인덱스 등에 변화를 주면 카탈로그가 갱신된다.

시스템 카탈로그의 종류

View Description
ALL_COL_COMMENTS $\quad$ User comments for table columns.
ALL_CONSTRAINTS Constraint definitions on accessible tables.
ALL_CONS_COLUMNS Accessible columns in constraint definitions.
ALL_TABLES All tables accessible to the user.
ALL_INDEXES All indexes defined on tables.
ALL_IND_COLUMNS Index key columns for all indexes in the database.
ALL_OBJECTS This view contains descriptions of the objects (tables, views, synonyms, indexes, and sequences).
ALL_SEQUENCES Descriptions of all sequences in the database.
ALL_SYNONYMS All synonyms in the database.
ALL_TAB_COLUMNS Columns of tables, views, and clusters accessible to the user.
ALL_TAB_COMMENTS Comments on tables and views entered by users.
ALL_USERS All schemas created in the connected database.
ALL_VIEWS Views accessible to the user.
CAT Tables and views accessible to the user.
DUAL A dummy table which can be used in a query when you want to return a single row.
USER_OBJECTS Objects accessible to the user.
SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME LIKE '%STH%';
Share